package org.kardigen.lg.main.server;

import java.util.Random;
import java.util.logging.Logger;

import javax.servlet.ServletException;

import org.eclipse.jdt.internal.core.util.SimpleWordSet;
import org.kardigen.lg.entity.WordImage;
import org.kardigen.lg.main.shared.service.WordService;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

/**
 * The server side implementation of the RPC service.
 */
@SuppressWarnings("serial")
public class WordServiceImpl extends RemoteServiceServlet implements WordService {

	private static final String SESSION_CONVERSATION_PREFIX = "SessionConversation-";

	private final static Logger LOG = Logger.getLogger(WordServiceImpl.class.getName());

	@Override
	public void init() throws ServletException {
		// super.init();
		//
		// List<SimpleWordSet> list = new ArrayList<SimpleWordSet>();
		//
		// {
		// List<WordImage> images = new ArrayList<WordImage>();
		// SimpleWordSet wordSet = new SimpleWordSet();
		// // wordSet.setImages(images);
		//
		// {
		// WordImage image = new WordImage();
		// image.setId("banan");
		// image.setImageUrl("http://zdrowaszkola.blox.pl/resource/banan.png");
		// images.add(image);
		//
		// WordImage image2 = new WordImage();
		// image2.setId("banan");
		// image2.setImageUrl("http://zdrowaszkola.blox.pl/resource/banan.png");
		//
		// Word word = new Word();
		// word.setWord("BANAN");
		//
		// wordSet.setWord(word);
		// }
		//
		// {
		// WordImage image = new WordImage();
		// image.setId("auto");
		// image.setImageUrl("http://photos01.otomoto.pl/photos/original/C9/86/55/C9865584_1.jpg");
		// images.add(image);
		// }
		//
		// {
		// WordImage image = new WordImage();
		// image.setId("ptak");
		// image.setImageUrl("http://trzyem.blox.pl/resource/niebieskiptak.jpg");
		// images.add(image);
		// }
		// list.add(wordSet);
		// }
		//
		// {
		// List<WordImage> images = new ArrayList<WordImage>();
		// SimpleWordSet wordSet = new SimpleWordSet();
		// // wordSet.setImages(images);
		//
		// {
		// WordImage image = new WordImage();
		// image.setId("banan");
		// image.setImageUrl("http://zdrowaszkola.blox.pl/resource/banan.png");
		// images.add(image);
		//
		// }
		//
		// {
		// WordImage image = new WordImage();
		// image.setId("auto");
		// image.setImageUrl("http://photos01.otomoto.pl/photos/original/C9/86/55/C9865584_1.jpg");
		// images.add(image);
		//
		// WordImage image2 = new WordImage();
		// image2.setId("auto");
		// image2.setImageUrl("http://photos01.otomoto.pl/photos/original/C9/86/55/C9865584_1.jpg");
		//
		// Word word = new Word();
		// word.setWord("AUTO");
		// wordSet.setWord(word);
		//
		// }
		//
		// {
		// WordImage image = new WordImage();
		// image.setId("ptak");
		// image.setImageUrl("http://trzyem.blox.pl/resource/niebieskiptak.jpg");
		// images.add(image);
		// }
		// list.add(wordSet);
		// }
		//
		// PersistenceManager pm = PMF.get().getPersistenceManager();
		// try {
		// pm.makePersistentAll(list);
		// } finally {
		// pm.close();
		// }


	}

	public String startWordLearningSession() {

		// LOG.info("startWordLearningSession executed");
		//
		// invalidateSession();
		//
		// List<SimpleWordSet> list = null;
		// PersistenceManager pm = PMF.get().getPersistenceManager();
		// Transaction tx = pm.currentTransaction();
		// try {
		// tx.begin();
		// javax.jdo.Query q = pm.newQuery(SimpleWordSet.class);
		// list = (List<SimpleWordSet>) q.execute();
		// tx.commit();
		// } catch (Exception e) {
		// tx.rollback();
		// LOG.severe("Error: " + e.getMessage());
		// e.printStackTrace();
		// } finally {
		// pm.close();
		// }
		//
		// String sessionId = generateConversationId();
		// SessionConversation con = getConversation(sessionId);
		// con.setWordSets(Collections.unmodifiableList(list));
		// return sessionId;
		return null;
	}

	private String generateConversationId() {
		return "" + System.currentTimeMillis() + new Random().nextLong();
	}

	private void invalidateSession() {
		getThreadLocalRequest().getSession().invalidate();
	}

	// private SessionConversation getConversation(String sessionId) {
	//
	// // SessionConversation con = (SessionConversation)
	// // getThreadLocalRequest().getSession().getAttribute(
	// // SESSION_CONVERSATION_PREFIX + sessionId);
	// //
	// // if (con == null) {
	// // con = new SessionConversation();
	// // setConversation(sessionId, con);
	// // }
	// //
	// // return con;
	// return null;
	// }

	public SimpleWordSet getWord(String sessionId) {

		// LOG.info("getNextWord executed");
		//
		// SessionConversation con = getConversation(sessionId);
		// return con.getCurrentWordSet();
		return null;
	}

	public boolean checkAnswer(String sessionId, WordImage ans) {

		// SessionConversation con = getConversation(sessionId);
		// SimpleWordSet wordSet = con.getCurrentWordSet();
		//
		// if (wordSet.getWord().getImageKey().equals(ans.getDbId())) {
		// con.setNextWordSet();
		// setConversation(sessionId, con);
		// return true;
		// }

		return false;
	}

	// private void setConversation(String sessionId, SessionConversation con) {
	// getThreadLocalRequest().getSession().setAttribute(SESSION_CONVERSATION_PREFIX
	// + sessionId, con);
	// }

}
